1. Field of Invention
The present invention relates generally to methods, apparatus, and software for managing and accessing computer files. More particularly, the present invention relates to software, methods, and apparatus for efficiently embedding data files and file names into object files to create a virtual file system for use by software running on a computer system.
2. Background
A networked computer system often includes file systems which are shared between different programs and even different operating systems. A kernel, which includes generally one or more programs that control basic system functions within an operating system, has to constantly access physical files, either remote or local, during the execution of the kernel or during the execution of an application program by the computer. Such requirements are both time consuming and utilize many computer system resources. By way of example, having to constantly access a file system which is located on a remote hard disk generally reduces the overall speed and efficiency at which the kernel can execute. This in turn can affect the performance of the entire computer system.
As a result, "virtual" file systems can be created in computer memory, i.e., either random access memory (RAM) or read-only memory (ROM). These virtual file systems can be loaded into computer memory simultaneously with a kernel or application program which is expected to use the file systems. Loading the virtual file systems at the same time as the kernel or programs are loaded is possible as virtual file systems comprise only that portion of the data contained in the file system that is relevant to the kernel or program. In other words, as the file systems which are used by a program are generally identifiable, it is possible to include virtual representations of the file systems with data which may be loaded with the program.
As file systems typically include data files, the creation of virtual file systems generally involves instantiating data files, as well as the names of data files, into object files which may be linked to obtain an image of executable code that is loaded into the computer memory as the virtual file system. As will be appreciated by those skilled in the art, an image of executable code is basically a computer program which includes computer instructions in a form which can be recognized and processed by a computer processor. Methods used to instantiate data files into object files typically either involve converting the data into source code for a higher level programming language, or converting the data directly into a higher-level language data structure, as for example an array created in the C language. In general, an object file may then be obtained by using either the source code version of the data contained in data files, or the higher-level language data structure.
Converting data files into source code or a higher-level language data structure is time consuming however. As data files generally must be converted each time a program associated with the data files is run in order to assure that the virtual data files used by the program will be current, the process of converting data can greatly reduce the speed at which a program may be built, i.e., converted, compiled, and linked, forcing the user to wait for access to operational software. What is desired, therefore, is an efficient method and apparatus for creating a virtual file system in computer memory.